<template>
    <div class="person">
        <h2>姓名: {{name}}</h2>
        <h2>年龄: {{age}}</h2>
        <button @click="changeName">修改姓名</button>
        <button @click="changeAge">修改年龄</button>
        <button @click="showTel">查看联系方式</button>
    </div>
</template>

<script lang="ts">
export default {
    name: 'Person',
    setup() {
        // setup中的 this 是 undefined， vue3中弱化了this

        // 定义数据
        let name = '张三' // 直接定义的变量并不是响应式的(值变化页面数据不会变)
        let age = 18
        let tel = '15666968248'
        function changeName() {
            name = 'zhang-san' // 注意这样修改 页面不会变化
        }

        function changeAge() {
            age += 1
        }
        function showTel() {
            alert(tel)
        }
        // 将数据返回 这里可以给数据起别名(:前面的是别名)，也可以直接用原名
        return {name:name, age, changeName, changeAge, showTel}
        
        // setup的返回值也可以是一个渲染函数
        // return () => '哈哈' // 相当于 retrun function(){retrun '哈哈'}  
    }
}


</script>

<style scoped>
.person {
    background-color: skyblue;
    box-shadow: 0 0 10px;
    border-radius: 10px;
    padding: 20px;
}
button {
    margin: 0 5px;
}
</style>